// vue双向数据绑定
let obj = {name: {name: "Dashu"}, age: 20}

function update() {
  console.log('数据更新了')
}
// 监听
function observer(obj) {
  if(typeof obj != 'object') {
    return obj
  }
  for(let key in obj) {
    defineReactive(obj, key, obj[key])

  }

}
// 把对象中的所有属性都采用object.defineProperty方式来定义
function defineReactive(obj, key, value) {
  observer(value)
  Object.defineProperty(obj, key, {
    get() {
      return value
    },
    set(val) {
      update()
      if(val != value) value = val
    }
  })
}

observer(obj)
obj.name.name = 90
console.log(obj.name.name)


